home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacHack 2000
/
MacHack 2000.toast
/
pc
/
The Hacks
/
Softshoe
/
Lisa's Mac Parts
/
Events
/
Quitter.cp
< prev
next >
Wrap
Text File
|
2000-06-23
|
1KB
|
60 lines
// Quitter.cp
#ifndef Quitter_h
#include "Quitter.h"
#endif
#ifndef QuitBlocker_h
#include "QuitBlocker.h"
#endif
#ifndef BroadcastLoop_h
#include "BroadcastLoop.h"
#endif
#ifndef PreparingToQuit_h
#include "PreparingToQuit.h"
#endif
Quitter::Quitter()
: quitting( false ),
savingOption( SavingOption::ask )
{
}
Quitter& Quitter::The()
{
static Quitter the;
return the;
}
bool Quitter::CanStartQuitting() const
{
return quitting == false && QuitBlocker::AllowsQuit();
}
bool Quitter::CanStopQuitting() const
{
return quitting == true;
}
void Quitter::StartQuitting( SavingOption theSavingOption )
{
Assert( CanStartQuitting() );
savingOption = theSavingOption;
quitting = true;
}
void Quitter::StopQuitting()
{
Assert( CanStopQuitting() );
quitting = false;
}
bool Quitter::ApplicationCanExit() const
{
for ( BroadcastLoop<PreparingToQuit> receiver( PreparingToQuit::TheBroadcaster() );
quitting && QuitBlocker::AllowsQuit() && receiver.Unfinished();
receiver++ )
receiver->PrepareToQuit( savingOption );
return quitting && QuitBlocker::AllowsQuit();
}